Bar code symbols are presently widely used to label items for automated product identification. A bar code symbol consists of a sequence of light and dark regions referred to as elements or bars. These elements are typically rectangular in shape and often have a variety of possible widths. An arrangement of elements represents a character and is determined according to a set of rules and definitions typically referred to as a "code". A variety of codes such as the Universal Product Code (UPC) and Code 39 exist and provide a degree of uniformity.
More specifically, codes define a set of characters wherein each character is depicted and defined by a unique arrangement of elements. To encode a desired message having a number of characters, a collection of element arrangements are concatenated to form a bar code symbol, with each character of the message being represented by its own corresponding group of elements.
Characters recognized and defined by a code are referred to as legitimate characters while characters not recognized and defined by a code are referred to as illegitimate characters. Thus, an arrangement of elements not decodable by a given code corresponds to an illegitimate character(s) for that code.
In decoding the bar code symbol to extract a legitimate character message, a bar code reading device first scans the symbol and generates an electrical analog scan signal representative of the symbol. Next, the reading device and associated components attempt to decode the message from this analog scan signal according to the protocol of the code in use. A legitimate character message consists of one or more characters, each of which must be legitimate.
In particular, to generate the analog scan signal representative of the bar code symbol, the reading device scans the bar code symbol with a light source. A wide variety of light sources as well as sweeping devices arid methods may be employed. Illustratively, a laser is employed to sweep a laser beam across the symbol. As the laser beam scans the symbol, an optical sensor receives the light reflected by the elements of the symbol and generates the analog scan signal which is a function of the intensity of the reflection. A converter monitors and/or modifies this analog scan signal, detecting changes in the intensity of the reflected light as the laser crosses the boundary between two adjacent elements. By measuring and storing the amount of time between each such change in intensity, the converter creates a representation, referred to as a raw converted image, of the bar code symbol. Advantageously, the output of the converter is in a form suitable for decoding by a decoder. Illustratively, the amount of time between changes in intensity is measured in counts.
The converter may be a digitizer which creates a digital representation, referred to as a raw digital image, of the bar code symbol.
The decoder then compares this raw digital image against legitimate character image(s) as defined by the pertinent code. Unfortunately, any of a variety of sources of error, defects, and the like, singly and collectively referred to as distortion, may corrupt the above described scanning process and produce distorted analog scan signals and/or distorted digital images such that the raw digital image does not completely and accurately represent the bar code symbol being read. The decoder, unable to match the raw digital image with legitimate character image(s), will then indicate a decode failure. Preferably, the decoder performs this comparison on a character by character basis.
Specifically, a decode failure exists when the decoder is unable to decipher the output of the converter, i.e., when the decoder is unable to match the output of the converter with character images which are included in the specific code in use. Such character images which are included in and recognized by the specific code in use are referred to :s legitimate or valid characters. Thus, if a decode failure occurs, the character which was attempted to be decoded was an invalid character and the bar code symbol cannot be properly read.
Upon registering a decode failure, conventional bar code readers discard the entire distorted raw digital image and repeat the entire process described above until a scan is produced which is sufficiently free from distortion such that the decoder can match legitimate character image(s) with the raw digital image. Such legitimate character images are typically stored in or accessible to the decoder. However, this method is unnecessarily time consuming, particularly in circumstances where it is difficult to obtain a scan which is not distorted.
Difficulties associated with the inability to read a bar code symbol or the erroneous reading of a bar code symbol are especially common in applications involving relatively long bar code messages, i.e., bar code symbols having numerous elements. As the length of the message increases, the number of elements and characters increases, thereby raising the likelihood that distortion will be introduced at some point during the scan. Accordingly, the bar code reader may scan the symbol numerous times before producing a raw digital image sufficiently free from distortion that it can be decoded.
Further, bar code symbols may contain printing defects which are arranged such that it is unlikely to obtain a single distortion free scan, i.e., valid characters cannot be produced and the bar code cannot be read. Additionally, the bar codes may be printed in a dot matrix style in which case the ability to read the bar codes depends on the resolution of the print. Using conventional methods of decoding, such bar code symbols are often unreadable since readings thereof do not result in valid characters.